///////////////////////////////////////////////////////////////////////////////////////////////////
/// \file formic/command.h
///
/// \brief   header file for the class used to manage commands
///
///////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef FORMIC_COMMAND_HEADER
#define FORMIC_COMMAND_HEADER

#include<string>

namespace formic {

  // forward declaration of the AllData and Archive classes
  class AllData;
  class Archive;

  void add_command(const std::string & command_name, void (*command_func)(formic::Archive &, formic::AllData &));

  void run_command(const std::string & command_name, formic::Archive & arch, formic::AllData & data);

  void run_text_commands(const std::string & filename, formic::AllData & data);

  void run_binary_commands(const std::string & filename, formic::AllData & data);

  void init_command_commands();

}

#endif
